package com.itheima.controller;

import com.itheima.pojo.*;
import com.itheima.service.ClassService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@Slf4j
@RestController
@RequestMapping("/clazzs")
public class ClazzController {

    @Autowired
    private ClassService classService;

    /**
     * 条件分页查询班级
     * 请求路径：/clazzs
     * 请求方式：GET
     */
    @GetMapping
    Result classListInfo(ClassQueryParam classQueryParam){
        PageResult pageResult =classService.classListInfo(classQueryParam);
        return Result.success(pageResult);
    }

    /**
     * 添加班级
     * 请求路径：/clazzs
     * 请求方式：POST
     */
    @PostMapping
    public Result addClazz(@RequestBody Clazz clazz) {
        log.info("添加班级: {}", clazz);
        classService.addClazz(clazz);
        return Result.success();
    }

    /**
     * 根据ID删除班级
     * 请求路径：/clazzs/{id}
     * 请求方式：DELETE
     */
    @DeleteMapping("/{id}")
    public Result deleteById(@PathVariable Integer id) {
        log.info("删除班级: id={}", id);
        classService.deleteById(id);
        return Result.success();
    }

    /**
     * 查询所有班级
     * 请求路径：/clazzs/list
     * 请求方式：GET
     */
    @GetMapping("/list")
    public Result getAllClasses() {
        log.info("查询所有班级");
        List<Clazz> clazzList = classService.getAllClasses();
        return Result.success(clazzList);
    }

    /**
     * 根据ID查询班级
     * 请求路径：/clazzs/{id}
     * 请求方式：GET
     */
    @GetMapping("/{id}")
    public Result getById(@PathVariable Integer id) {
        log.info("根据ID查询班级: id={}", id);
        Clazz clazz = classService.getById(id);
        return Result.success(clazz);
    }

    /**
     * 根据ID修改班级
     * 请求路径：/clazzs
     * 请求方式：PUT
     */
    @PutMapping
    public Result updateById(@RequestBody Clazz clazz) {
        log.info("修改班级: {}", clazz);
        classService.updateById(clazz);
        return Result.success();
    }

    /**
     * 查询所有班主任
     * 请求路径：/clazzs/masters
     * 请求方式：GET
     */
    @GetMapping("/masters")
    public Result getAllMasters() {
        log.info("查询所有班主任");
        List<Emp> masters = classService.getAllMasters();
        return Result.success(masters);
    }
}
